package cn.doitedu.day05

import cn.doitedu.day01.utils.SparkUtil
import cn.doitedu.day03.beans.Student
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.1
 * @Created by HANGGE
 * @Description
 */
object C11_转换算子_Distinct {
  def main(args: Array[String]): Unit = {
    val sc = SparkUtil.getSc
    val rdd = sc.parallelize(List(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 5, 6))
    // 调用某些算子  可以修改分区的个数
  /*  val resRDD = rdd.distinct(2)
    resRDD.foreach(println)*/
    val rdd1 = sc.textFile("data/students.csv")
    // 调用算子  转换   不会触发计算
    // 1) 将每行数据切割
    val rdd2: RDD[Array[String]] = rdd1.map(line => line.split(","))
    // 2) 将每行数据切割 处理   封装在Student类中
    val res1: RDD[Student] = rdd1.map(line=>{
      val arr = line.split(",")
      //7,七娃,15,M,99,doit30
      Student(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4).toDouble, arr(5))
    })
    val res2 = res1.distinct()
    res2.foreach(println)
    // 元组也可以按照内容去重
    val rddx = sc.parallelize(List(("a", 1), ("a", 2), ("a", 1), ("b", 3)))
    val resx = rddx.distinct()
/*    sc.textFile("data/a.txt")
      .flatMap(_.split("\\s+"))
      .map((_,1))*/
    resx.foreach(println)
  }

}
